var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var engine=require('ejs-mate')
var MarkdownIt=require('markdown-it')
var md=new MarkdownIt()
var busboy=require('connect-busboy')
var webRouter=require('./routes/web_router.js')
var config=require('./config.js')
var app = express();
// view engine 	setup
app.engine('html',engine)
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'html');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.locals.config=config
app.locals.md=md
app.use(busboy())
//判段用户是否登录
app.use(function(req,res,next){
	if(req.cookies.token){
    var redis = require('redis');
    var client = redis.createClient(config.redis_port,config.redis_host);
    client.on('connect',()=>{
      //将键值放入redis中进行查询
      client.hgetall(req.cookies.token, function (err, obj) {
        //以过期，被定时任务清除
        if(obj!=null){
          global.current_user=JSON.parse(obj.user)
        }else{
          global.current_user=false 
          res.cookie('token','')
        }
        next()
      });     
    })
  }
  else{
    global.current_user=false
    next()
  }
})
app.use('/',webRouter)
// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;
